package bindings;
import events.Event;
import utils.*;
import wrapper.*;
import sensores.*;
import alarmas.*;

public abstract cclass AspectoSensores {

	abstract pointcut getEvento(events.Event e);
	
	after(events.Event e): getEvento(e){
		Colaboracion v2c = new Colaboracion();
		v2c.activaEnvuelto(e);
	}
	
	public cclass Colaboracion wraps events.Event{
		public void envuelve(){
			wrappee.getManageSensores().setInitSize();
			for(int i = 0;i<wrappee.getManageSensores().getSize();i++){
				sensores.Sensor sensor = wrappee.getManageSensores().getNext();
				if(wrappee.getTipo().equals(Tipos.ACTIVAR)){
					sensor.activar();
				}
				if(wrappee.getTipo().equals(Tipos.REVISAR)){
					sensor.accion();
				}
				if(wrappee.getTipo().equals(Tipos.DESACTIVAR)){
					sensor.desactivar();
				}
			}
		}
	
		public void activaEnvuelto(events.Event e){
			Colaboracion(e).envuelve();
		}
	}
	
}


public deployed cclass ObtenerEvento extends AspectoSensores{
	pointcut getEvento(events.Event e):
		execution(boolean Event.accion()) && target(e);
		
}
